package jsu.ljy.lostandfind.service;

import java.util.List;

import jsu.ljy.lostandfind.model.Item;

/**
 * 物品服务接口
 * 
 * <p>定义了物品相关的业务逻辑操作接口，包括物品的发布、查询、更新、删除等功能。</p>
 * 
 * @author 罗嘉毅
 * @version 1.0
 * @since 2024-03-21
 */
public interface ItemService {
    /**
     * 发布物品
     * 
     * @param item 要发布的物品信息
     * @return 发布成功的物品信息
     * @throws IllegalArgumentException 当物品信息不完整或无效时抛出
     */
    Item publishItem(Item item);

    /**
     * 更新物品信息
     * 
     * @param item 更新的物品信息
     * @throws IllegalArgumentException 当物品ID为空或物品不存在时抛出
     */
    void updateItem(Item item);

    /**
     * 删除物品
     * 
     * @param id 物品ID
     * @throws IllegalArgumentException 当ID为空或物品不存在时抛出
     */
    void deleteItem(Long id);

    /**
     * 根据ID查询物品
     * 
     * @param id 物品ID
     * @return 物品信息，不存在时返回null
     */
    Item getItemById(Long id);

    /**
     * 获取所有物品
     * 
     * @return 物品列表
     */
    List<Item> getAllItems();

    /**
     * 根据状态查询物品
     * 
     * @param status 物品状态
     * @return 符合状态的物品列表
     */
    List<Item> getItemsByStatus(String status);

    /**
     * 搜索物品
     * 
     * @param keyword 搜索关键词
     * @return 匹配的物品列表
     */
    List<Item> searchItems(String keyword);
} 